package logic

import (
	"MsSgServer/constant"
	"MsSgServer/db"
	"MsSgServer/server/common"
	"MsSgServer/server/models"
	"MsSgServer/server/web/model"
	"MsSgServer/utils"
	"log"
	"time"
)

// 注册逻辑业务层

var DefaultAccountLogic = &AccountLogic{}

type AccountLogic struct {
}

func (l AccountLogic) Register(rq *model.RegisterReq) error {
	// 获取请求信息
	username := rq.Username
	// 数据库查询是否有该 User
	user := &models.User{}
	ok, err := db.Engine.Table(user).Where("username=?", username).Get(user)
	if err != nil {
		log.Println("注册查询失败！ ", err)
		return common.New(constant.DBError, "数据库异常！")
	}
	if ok {
		// 有数据 提示用户已存在
		log.Println("提示用户已存在！ ")
		return common.New(constant.UserExist, "用户已存在！")
	} else {
		// 没有数据 进行插入
		log.Println("没有该用户数据，可进行注册！ ")
		user.Mtime = time.Now()
		user.Ctime = time.Now()
		user.Username = rq.Username
		user.Passcode = utils.RandSeq(6)                         // 加密盐随机六位数
		user.Passwd = utils.Password(rq.Password, user.Passcode) // 密码
		user.Hardware = rq.Hardware
		_, err = db.Engine.Table(user).Insert(user)
		if err != nil {
			log.Println("注册用户插入失败！ ", err)
			return common.New(constant.DBError, "数据库异常！")
		}
		return nil
	}
}
